# 同步运行 playwright
from playwright.sync_api import sync_playwright  # 同步客户端库
# 如果是使用异步则调用asyns_api
import time
print(" 启动 playwright_ui driver 进程-------")
#with方法可以修改成p=sync_playwright（）.start（，但代码执行完成后浏览器不会自动关闭
# p = sync_playwright().start()
#创建一个pLaywright对象（使用with方法创建的好处：执行完成后会自动关闭浏览器）
with sync_playwright() as p:
    print("启动浏览器，返回 Browser 类型对象--------")
    browser = p.chromium.launch(headless=False)
    # 创建一个上下文（包含访问页面的相关信息，缓存信息）
    context = browser.new_context()
    print("创建新页面，返回 Page 类型对象,页面操作对象")
    page = context.new_page()
    # 打开页面
    # 參数
    # timeout：超时时间，规定时间内未打开页面则抛出异常
    # referer：跳转地址，模拟用户从某个特定的页面跳转而来
    # wait_until：.等待，加载完成的条件
    # load：.等待页面完全加载
    # domcontentloaded：HTML文档加载完毕，但页面资源可能还在加载
    # network（不推荐）…等待所有的网络请求完毕
    # page.goto("https://www.baidu.com", timeout=10000, referer="https://www.taobao.com", wait_until="load")
    # page.wait_for_timeout(2000) # 强制等待
    # goto 前往某一个页面
    page.goto('https://www.baidu.com/')
    print(page.title())  # 打印网页标题栏
    time.sleep(2)
    # 根据css选择器 找到选择框 输入内容
    page.locator('#kw').fill('PO设计模式')  # 输入通讯
    page.locator('#su').click()  # 点击百度一下
    # page.locator('#kw').fill('PO设计模式\n')    # 可以代替上面的两行
    time.sleep(3)
    # 打印所有搜索内容
    lcs = page.locator(".content-right_2s-H4").all()
    for lc in lcs:
        print(lc.inner_text())
    # # 关闭浏览器
    # browser.close()
    # 关闭 playwright_ui driver 进程
    p.stop()








